#define BLINKER_BLE //点灯科技app数据上传模式：蓝牙
#include <Blinker.h>//点灯：头文件
BlinkerNumber WENHIGE("wenhige");//对应点灯数据wenhige
BlinkerNumber WENH("wenh");//对应点灯数据wenh
float maxTemp = 23.4;
float tempC7 = 24.2;
int cc = 0;
bool qw = false;
const int cc1 = 123;
int INPUT11 = 2;
int colonIndex = 0;
bool dataReceived = false; // 添加一个标志以跟踪是否已接收到数据。

void BLINKER1() {
  Blinker.run();
  WENH.print(tempC7);
  WENHIGE.print(maxTemp);
  delay(3000);
  maxTemp += 0.1;
  tempC7 -= 0.1;
}

void sendData() {
  // 传输数据
  Serial.print(maxTemp);
  Serial.print(",");
  Serial.print(tempC7);
  Serial.print("\r\n");
    delay(3000);
  // 增加maxTemp, tempC7的值，以便下次传输
  maxTemp += 0.1;
  tempC7 -= 0.1;

}

void setup() {
  Serial.begin(9600); // 初始化硬件串口
  Blinker.begin(0, 1);//使用硬串口
  pinMode(INPUT11,INPUT);
}

void loop() {
    if (digitalRead(INPUT11) == HIGH) {//检测蓝牙是否有连接上设备（jdy-18蓝牙模块的stat引脚当有设备连接时会变成高电平，没有则是低电平）
        if (!qw) {
            unsigned long startTime = millis();// 记录当前时间
            do {
                if (Serial.available()) {// 如果有可用数据
                    String message = Serial.readStringUntil('\n'); // 读取一行数据
                    int colonIndex = message.indexOf(':');// 查找冒号位置
                    String key = message.substring(0, colonIndex);// 获取键值 "cc"
                    String value = message.substring(colonIndex + 1);// 获取密码

                    if (key == "cc") {// 如果键值是 "cc"
                        cc = value.toFloat();// 将值存储到 cc 变量中，用于判断第一次收到的数据能与之cc2的值相同，差不多就是写了个类似于对暗号的操作
                        dataReceived = true; // 在成功读取数据后将标志设置为true
                        break;// 在成功读取数据后跳出dowhile循环
                        }
                    }

                
            } while (millis() - startTime < 1000);// 当时间未超过1秒
            qw = true;
        }
        if(dataReceived){//标志来跟踪是否已接收到数据。如果没有接收到数据，则不会上传数据或运行BLINKER1函数。
        if(cc==cc1){
            sendData();// 连接的是主机，上传数据
        }else{
            BLINKER1();//连接的不是主机，默认运行BLINKER
        }
    } else {
            BLINKER1();//连接的不是主机，默认运行BLINKER
    }
        } else {
        cc = 0;
        qw = false;
        dataReceived = false; // 在成功读取数据后将标志设置为true
    }
    
}